//
// Created by Administrator on 2024-5-10
// 高精度计算--subtract
// OJ:https://www.luogu.com.cn/problem/P2142 通过
// OJ:http://ybt.ssoier.cn:8088/problem_show.php?pid=1169 通过
//


/*
 * 99-99=0
 * 22-11=11
 * 111-12=99
 * 166-32=134
 * 11-122=-111
 * 111-122=-11
 * 30141-8160=21981
 * 12-14=-2
 */
#include <iostream>

using namespace std;

// a和b不相等的情况下 比较两个高精度数a,b的大小
// a>b return 1, a<b return 0
bool compare(string a , string b)
{
    // a>b
    if(a.size()>b.size())
        return 1;
    // a<b
    if(a.size()<b.size())
        return 0;
    // 长度相等的情况
    for (int i = a.size()-1; i >=0 ; --i)
    {
        if (a[i]>b[i])
            return 1;
        else if(a[i]>b[i])
            return 0;
    }
    return 0;
}

int main()
{
    // a-b
    string a = "112", b = "100"; // 12
    a = "212", b = "103"; // 109
//    a = "99", b = "99"; //0
//    a = "11", b = "122";  // -111
//    a = "111", b = "122"; // -11
//    a = "30141", b = "8160"; //21981
//    a = "8160", b = "30141"; //-21981
//    a="12",b="14";  // -2
//    cin>>a>>b;
//    printf("%s-%s=\n",a.c_str(),b.c_str());
    string ret;
    bool negative=false;
    if (a==b)
    {
        cout<<0;
    }
    else
    {
        // 保证a大于b 且两个数长度相等
        if (!compare(a,b))
        {
            swap(a,b);
            negative=true;
        }
        while(b.size()<a.size())
        {
            b="0"+b;
        }
        int next = 0;
        for (int i = a.size()-1; i >= 0 ; --i)
        {
            int cur = a[i]-b[i]-next;
            if (cur<0)
            {
                cur+=10;
                next=1;
            }
            else
                next=0;
            string t = to_string(cur);
            ret=t+ret;
        }
    }
    if(negative)
        cout<<'-';
    int i = 0;
    // 开头的'0'不打印
    for (; i < ret.size(); ++i)
        if(ret[i]!='0')
            break;
    for (; i < ret.size() ; ++i)
        cout<<ret[i];
    return 0;
}